package hujz.java.file_server;

import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.channels.Channel;

/**
 * 实际存储接口
 */
public interface StorageInterface {

    /**
     * 存储唯一标识
     * @return
     */
    String identify();

    /**
     * 保存文件
     * @param file
     * @return 返回uri
     */
    String storage(FileMeta fileMeta, File file);
    /**
     * 保存输入流
     * @param inputStream
     * @return 返回uri
     */
    String storage(FileMeta fileMeta, InputStream inputStream);

    /**
     * 转换一个uri为文件
     * @param uri
     * @return
     */
    File file(String uri);

    /**
     * 转换一个uri为输出流
     * @param uri
     * @return
     */
    OutputStream stream(String uri);

    Channel channel(String uri);

}
